+2001-01-05 Alexander Larsson <alexl@redhat.com>
+
+ * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_drawable_finalize): free
+ colormap in here. Sync from X port.
+ (gdk_fb_set_colormap): allow the colormap to be NULL if you like.
+ Sync from X port.
+ (gdk_fb_clip_region): Comment out g_warning about empty clip region.
+ This happens now and then, and i don't think it is a bug.
+ (gdk_fb_draw_polygon): Correctly add extra point if startpoint
+ != endpoint.
+ (gdk_fb_draw_lines): Don't draw dashed lines if line_style is
+ GDK_LINE_SOLID.
+
+ * gdk/linux-fb/gdkfont-fb.c: Return bogus GdkFont that has
+ some of the fields filled in at least.
+
+ * gdk/linux-fb/miwideline.c: The widths argument to miLineArcI, and
+ miLineArcD is no more, remove it from the function definition.
+
2001-01-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeselection.c (gtk_tree_selection_get_tree_view): add
+2001-01-05 Alexander Larsson <alexl@redhat.com>
+
+ * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_drawable_finalize): free
+ colormap in here. Sync from X port.
+ (gdk_fb_set_colormap): allow the colormap to be NULL if you like.
+ Sync from X port.
+ (gdk_fb_clip_region): Comment out g_warning about empty clip region.
+ This happens now and then, and i don't think it is a bug.
+ (gdk_fb_draw_polygon): Correctly add extra point if startpoint
+ != endpoint.
+ (gdk_fb_draw_lines): Don't draw dashed lines if line_style is
+ GDK_LINE_SOLID.
+
+ * gdk/linux-fb/gdkfont-fb.c: Return bogus GdkFont that has
+ some of the fields filled in at least.
+
+ * gdk/linux-fb/miwideline.c: The widths argument to miLineArcI, and
+ miLineArcD is no more, remove it from the function definition.
+
2001-01-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeselection.c (gtk_tree_selection_get_tree_view): add
+2001-01-05 Alexander Larsson <alexl@redhat.com>
+
+ * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_drawable_finalize): free
+ colormap in here. Sync from X port.
+ (gdk_fb_set_colormap): allow the colormap to be NULL if you like.
+ Sync from X port.
+ (gdk_fb_clip_region): Comment out g_warning about empty clip region.
+ This happens now and then, and i don't think it is a bug.
+ (gdk_fb_draw_polygon): Correctly add extra point if startpoint
+ != endpoint.
+ (gdk_fb_draw_lines): Don't draw dashed lines if line_style is
+ GDK_LINE_SOLID.
+
+ * gdk/linux-fb/gdkfont-fb.c: Return bogus GdkFont that has
+ some of the fields filled in at least.
+
+ * gdk/linux-fb/miwideline.c: The widths argument to miLineArcI, and
+ miLineArcD is no more, remove it from the function definition.
+
2001-01-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeselection.c (gtk_tree_selection_get_tree_view): add
+2001-01-05 Alexander Larsson <alexl@redhat.com>
+
+ * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_drawable_finalize): free
+ colormap in here. Sync from X port.
+ (gdk_fb_set_colormap): allow the colormap to be NULL if you like.
+ Sync from X port.
+ (gdk_fb_clip_region): Comment out g_warning about empty clip region.
+ This happens now and then, and i don't think it is a bug.
+ (gdk_fb_draw_polygon): Correctly add extra point if startpoint
+ != endpoint.
+ (gdk_fb_draw_lines): Don't draw dashed lines if line_style is
+ GDK_LINE_SOLID.
+
+ * gdk/linux-fb/gdkfont-fb.c: Return bogus GdkFont that has
+ some of the fields filled in at least.
+
+ * gdk/linux-fb/miwideline.c: The widths argument to miLineArcI, and
+ miLineArcD is no more, remove it from the function definition.
+
2001-01-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeselection.c (gtk_tree_selection_get_tree_view): add
+2001-01-05 Alexander Larsson <alexl@redhat.com>
+
+ * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_drawable_finalize): free
+ colormap in here. Sync from X port.
+ (gdk_fb_set_colormap): allow the colormap to be NULL if you like.
+ Sync from X port.
+ (gdk_fb_clip_region): Comment out g_warning about empty clip region.
+ This happens now and then, and i don't think it is a bug.
+ (gdk_fb_draw_polygon): Correctly add extra point if startpoint
+ != endpoint.
+ (gdk_fb_draw_lines): Don't draw dashed lines if line_style is
+ GDK_LINE_SOLID.
+
+ * gdk/linux-fb/gdkfont-fb.c: Return bogus GdkFont that has
+ some of the fields filled in at least.
+
+ * gdk/linux-fb/miwideline.c: The widths argument to miLineArcI, and
+ miLineArcD is no more, remove it from the function definition.
+
2001-01-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeselection.c (gtk_tree_selection_get_tree_view): add
+2001-01-05 Alexander Larsson <alexl@redhat.com>
+
+ * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_drawable_finalize): free
+ colormap in here. Sync from X port.
+ (gdk_fb_set_colormap): allow the colormap to be NULL if you like.
+ Sync from X port.
+ (gdk_fb_clip_region): Comment out g_warning about empty clip region.
+ This happens now and then, and i don't think it is a bug.
+ (gdk_fb_draw_polygon): Correctly add extra point if startpoint
+ != endpoint.
+ (gdk_fb_draw_lines): Don't draw dashed lines if line_style is
+ GDK_LINE_SOLID.
+
+ * gdk/linux-fb/gdkfont-fb.c: Return bogus GdkFont that has
+ some of the fields filled in at least.
+
+ * gdk/linux-fb/miwideline.c: The widths argument to miLineArcI, and
+ miLineArcD is no more, remove it from the function definition.
+
2001-01-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeselection.c (gtk_tree_selection_get_tree_view): add
+2001-01-05 Alexander Larsson <alexl@redhat.com>
+
+ * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_drawable_finalize): free
+ colormap in here. Sync from X port.
+ (gdk_fb_set_colormap): allow the colormap to be NULL if you like.
+ Sync from X port.
+ (gdk_fb_clip_region): Comment out g_warning about empty clip region.
+ This happens now and then, and i don't think it is a bug.
+ (gdk_fb_draw_polygon): Correctly add extra point if startpoint
+ != endpoint.
+ (gdk_fb_draw_lines): Don't draw dashed lines if line_style is
+ GDK_LINE_SOLID.
+
+ * gdk/linux-fb/gdkfont-fb.c: Return bogus GdkFont that has
+ some of the fields filled in at least.
+
+ * gdk/linux-fb/miwideline.c: The widths argument to miLineArcI, and
+ miLineArcD is no more, remove it from the function definition.
+
2001-01-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktreeselection.c (gtk_tree_selection_get_tree_view): add
GdkColormap *colormap);
static gint gdk_fb_get_depth (GdkDrawable *drawable);
static GdkVisual* gdk_fb_get_visual (GdkDrawable *drawable);
-
+static void gdk_fb_drawable_finalize (GObject *object);
static gpointer parent_class = NULL;
gdk_drawable_impl_fb_class_init (GdkDrawableFBClass *klass)
{
GdkDrawableClass *drawable_class = GDK_DRAWABLE_CLASS (klass);
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
+ object_class->finalize = gdk_fb_drawable_finalize;
+
drawable_class->create_gc = _gdk_fb_gc_new;
drawable_class->draw_rectangle = gdk_fb_draw_rectangle;
drawable_class->draw_arc = gdk_fb_draw_arc;
drawable_class->get_image = _gdk_fb_get_image;
}
+static void
+gdk_fb_drawable_finalize (GObject *object)
+{
+ gdk_drawable_set_colormap (GDK_DRAWABLE (object), NULL);
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+
GType
gdk_drawable_impl_fb_get_type (void)
{
GdkDrawableFBData *private;
private = GDK_DRAWABLE_FBDATA (drawable);
-
- old_cmap = private->colormap;
- private->colormap = gdk_colormap_ref (colormap);
- gdk_colormap_unref (old_cmap);
+
+ if (private->colormap == colormap)
+ return;
+
+ if (private->colormap)
+ gdk_colormap_unref (private->colormap);
+ private->colormap = colormap;
+ if (private->colormap)
+ gdk_colormap_ref (private->colormap);
}
/* Calculates the real clipping region for a drawable, taking into account
tmpreg = gdk_region_rectangle (&draw_rect);
gdk_region_intersect (real_clip_region, tmpreg);
gdk_region_destroy (tmpreg);
+ /*
if (!real_clip_region->numRects)
g_warning ("Empty clip region");
+ */
}
}
miFillPolygon (drawable, gc, 0, 0, npoints, points);
else
{
- GdkPoint *realpts = g_alloca (sizeof(GdkPoint) * (npoints + 1));
+ gint tmp_npoints;
+ GdkPoint *tmp_points;
+
+ if (points[0].x != points[npoints-1].x || points[0].y != points[npoints-1].y)
+ {
+ tmp_npoints = npoints + 1;
+ tmp_points = g_new (GdkPoint, tmp_npoints);
+ memcpy (tmp_points, points, sizeof(GdkPoint) * npoints);
+ tmp_points[npoints].x = points[0].x;
+ tmp_points[npoints].y = points[0].y;
+ }
+ else
+ {
+ tmp_npoints = npoints;
+ tmp_points = points;
+ }
- memcpy (realpts, points, sizeof(GdkPoint) * npoints);
- realpts[npoints] = points[0];
- gdk_fb_draw_lines (drawable, gc, points, npoints);
+ gdk_fb_draw_lines (drawable, gc, tmp_points, tmp_npoints);
}
}
private = GDK_GC_FBDATA (gc);
if (private->values.line_width > 0)
{
- if (private->dash_list)
+ if ((private->values.line_style != GDK_LINE_SOLID) && private->dash_list)
miWideDash (drawable, gc, 0, npoints, points);
else
miWideLine (drawable, gc, 0, npoints, points);
}
else
{
- if (private->dash_list)
+ if ((private->values.line_style != GDK_LINE_SOLID) && private->dash_list)
miZeroDashLine (drawable, gc, 0, npoints, points);
else
miZeroLine (drawable, gc, 0, npoints, points);
#error "We need Freetype 2.0 (beta?)"
#endif
-GdkFont*
-gdk_font_from_description (PangoFontDescription *font_desc)
+
+static GdkFont *
+gdk_fb_bogus_font (gint height)
{
GdkFont *font;
GdkFontPrivateFB *private;
- g_return_val_if_fail (font_desc, NULL);
-
private = g_new0 (GdkFontPrivateFB, 1);
font = (GdkFont *)private;
+
font->type = GDK_FONT_FONT;
- private->size = font_desc->size;
+ font->ascent = height*3/4;
+ font->descent = height/4;
+ private->size = height;
private->base.ref_count = 1;
-
return font;
}
+GdkFont*
+gdk_font_from_description (PangoFontDescription *font_desc)
+{
+ g_return_val_if_fail (font_desc, NULL);
+
+ return gdk_fb_bogus_font (PANGO_PIXELS(font_desc->size));
+}
+
/* ********************* */
#if 0
static GHashTable *font_name_hash = NULL;
GdkFont*
gdk_fontset_load (const gchar *fontset_name)
{
- return NULL;
+ return gdk_fb_bogus_font (10);
}
GdkFont *
gdk_font_load (const gchar *font_name)
{
- return NULL;
+ return gdk_fb_bogus_font (10);
}
void
private = (GdkFontPrivateFB*) font;
- return text_length * private->size / (2*PANGO_SCALE);
+ return (text_length * private->size) / 2;
#endif
}
*rbearing = ((double)mi.bbox.urx) / 1000.0 * private->size;
#else
if(ascent)
- *ascent = 0;
+ *ascent = font->ascent;
if(descent)
- *descent = 0;
+ *descent = font->descent;
if(width)
- *width = 0;
+ *width = gdk_text_width(font, text, text_length);
if(lbearing)
*lbearing = 0;
if(rbearing)
}
static int
-miLineArcI (pDraw, pGC, xorg, yorg, points, widths)
+miLineArcI (pDraw, pGC, xorg, yorg, points)
GdkDrawable* pDraw;
GdkGC* pGC;
int xorg, yorg;
}
static int
-miLineArcD (pDraw, pGC, xorg, yorg, points, widths,
+miLineArcD (pDraw, pGC, xorg, yorg, points,
edge1, edgey1, edgeleft1, edge2, edgey2, edgeleft2)
GdkDrawable* pDraw;
GdkGC* pGC;